﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<ctype.h>
#include<limits.h>

//struct Stu {
//	char name[100];
//	int age;
//	char id[100];
//}s1,s2,s3; //s1,s2,s3为全局结构体变量
//
//int main() {
//	struct Stu s1 = { "zhangsan",20,"202207070218" };
//	struct Stu s2 = { .age = 28,.id = "202207070217",.name = "lisi" };
//	printf("%s %d %s\n", s1.name, s1.age, s1.id);
//	printf("%s %d %s\n", s2.name, s2.age, s2.id);
//	return 0;
//}

//匿名结构体 -只能使用一次
//struct {
//	int a;
//	float b;
//	double c;
//}s;
//
//int main() {
//	s.a = 20;
//	printf("%d", s.a);
//	return 0;
//}

//struct {
//	int a;
//	float b;
//	double c;
//}s;
//
//struct {
//	int a;
//	float b;
//	double c;
//}* p;
//
//int main() {
//	p = &s;  //上述两个结构体会被编译器当成不同的类型，非法
//	return 0;
//}

//结构的⾃引⽤
//struct S {
//	int data;
//	struct S* next;  //存放下一个节点的地址
//};

//typedef struct Node{
//	int data;
//	struct Node* next;  
//};
//
//int main() {
//	printf("%zd", sizeof(struct Node));
//	return 0;
//}

//结构体内存对⻬  -结构体内存详解见课件(对齐数）
//struct S1 {
//	char a;  //1 8 1
//	int b;   //4 8 4
//	char c;  //1 8 4
//};
//
//struct S2 {
//	char a; //1 8 1
//	char b; //1 8 1
//	int c;  //4 8 4
//};
//
//struct S3 {
//	double a; //8 8 8
//	char b; //1 8 1
//	int c;  //4 8 4
//};
//
//struct S4 {
//	char a;      //1 8 1
//	struct S3 b; //8
//	double c;    //8 8 8
//};
//
//
//int main() {
//	printf("%zd\n", sizeof(struct S1));
//	printf("%zd\n", sizeof(struct S2));
//	printf("%zd\n", sizeof(struct S3));
//	printf("%zd\n", sizeof(struct S4));
//	return 0;
//}

//修改默认对⻬数
#pragma pack(1)
//struct S {
//	char a; //1 1 1
//	int b;  //4 1 1
//	char c; //1 1 1
//};
//#pragma pack()
//
//int main() {
//		printf("%zd\n", sizeof(struct S));
//		return 0;
//}

//结构体传参
//struct S {
//	int data[1000];
//	int num;
//};

////结构体传参
//void print1(struct S ss) {
//	for (int i = 0; i < 5 ; i++) {
//		printf("%d ", ss.data[i]);
//	}
//	printf("\n");
//	printf("%d\n",ss.num);
//}
//
////结构体地址传参  --尽量使用此方法节省空间
//void print2(struct S* ps) {
//	for (int i = 0; i < 5; i++) {
//		printf("%d ", ps->data[i]);
//	}
//	printf("\n");
//	printf("%d\n", ps->num);
//}
//
//int main() {
//	struct S s1 = { {1,2,3,4,5},20 };
//	print1(s1);
//	print2(&s1);
//	return 0;
//}

//结构体实现位段
//struct A {
//	char _a : 3;
//	char _b : 4;
//	char _c : 5;
//	char _d : 4;
//};
//
//int main() {
//	struct A s = { 0 };
//	s._a = 10; //010 
//	s._b = 12; //1100
//	s._c = 3;  //00011
//	s._d = 4;  //0100
//	printf("%zd", sizeof(struct A));
//	return 0;
//}

//struct B {
//	char _a : 3; 
//	char _b : 4;
//	char _c : 5;
//	char _d : 4;
//};
//
//int main() {
//	struct B s1 = { 0 };
//	scanf("%d", &s1._a);  //错误，两个变量的地址可能在一个字节中
//	int b = 0;
//	//正确
//	scanf("%d", &b);
//	s1._a = b;
//	return 0;
//}

//atoi函数的使用及模拟
//atoi函数是将字符串中的数字提取出来，并将其作为int值返回。
//enum Sta {
//	VAILD,
//	INVAILD
//}sta = INVAILD;
//
//int MyAtoi(const char* str) {
//	int flg = 1;
//	assert(str != NULL);
//	if (*str == '\0') {
//		return 0;
//	}
//	while (isspace(*str)) {
//		str++;
//	}
//	if (*str == '+') {
//		flg = 1;
//		str++;
//	}
//	if (*str == '-') {
//		flg = -1;
//		str++;
//	}
//	long long ret = 0;
//	while (*str != '\0') {
//		if (isdigit(*str)) {
//			ret = ret * 10 + flg * (*str - '0');
//			if (ret > INT_MAX)
//				return INT_MAX;
//			else if (ret < INT_MIN)
//				return INT_MIN;
//		}
//		else {
//			return ret;
//		}
//		str++;
//	}
//	if (*str == '\0')
//		sta = VAILD;
//	return (int)ret;
//}
//
//int main() {
//	const char arr1[] = " 123";
//	int ret = MyAtoi(arr1);
//	printf("%d\n", ret);
//	if (sta == VAILD)
//		printf("合法转换");
//	else if (sta == INVAILD)
//		printf("不合法转换");
//	return 0;
//}


//BC38 变种水仙花
//int main() {
//	int i = 0;
//	for (i = 10000; i <= 99999; i++) {
//		int j = 0;
//		int sum = 0;
//		int temp = i;
//		for (j = 10; j <= 10000; j *= 10) {
//			sum = sum + (temp % j) * (temp / j);
//		}
//		if (sum == i)
//			printf("%d ", sum);
//	}
//	return 0;
//}

//BC98 序列中删除指定数字
int main() {
    int n = 0;
    scanf("%d", &n);
    int arr[50] = { 0 };
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    int del = 0;
    scanf("%d", &del);
    int i = 0;
    int j = 0;
    for (i = 0; i < n; i++) {
        if (arr[i] != del) {
            arr[j] = arr[i];
            j++;
        }
    }
    for (int k = 0; k < j; k++) {
        printf("%d ", arr[k]);
    }
    return 0;
}